package smartlifev30.com.sdk.api.gateway_app;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import java.util.List;

import smartlifev30.com.sdk.api.CallBack;
import smartlifev30.com.sdk.bean.request.ControlDeviceRequest;
import smartlifev30.com.sdk.bean.request.IrLearnRequest;
import smartlifev30.com.sdk.bean.response.DeviceStatusResponse;
import smartlifev30.com.sdk.bean.response.LoginResponse;

/**
 * 控制管理模块
 * Created by tys on 2018/8/15.
 */

interface IControlMgmt {

    /**
     * 获得设备的当前状态.
     * deviceId和deviceType二选其一。不能同时为null
     *
     * @param userName
     * @param token
     * @param sn
     * @param deviceType 查询同一设备类型下的所有设备状态
     * @param deviceId   根据具体的设备ID查询单个设备的状态.
     * @param callback
     */
    void getDeviceStatus(@NonNull String userName, @NonNull String token, @NonNull String sn,
                         @Nullable String deviceType, @Nullable List<Integer> deviceId, @NonNull CallBack<DeviceStatusResponse> callback);


    /**
     * 设置设备的状态/属性
     * @param userName
     * @param token
     * @param sn
     * @param device   控制不同类型设备, 参数不同
     * @param callBack
     */
    void controlDevice(@NonNull String userName, @NonNull String token, @NonNull String sn,
                       @NonNull ControlDeviceRequest.Device device, @NonNull CallBack<LoginResponse> callBack);


    void irLearn(@NonNull String userName, @NonNull String token, @NonNull String sn,
                 @NonNull IrLearnRequest.Device device, @NonNull CallBack<LoginResponse> callBack);

}
